const app = getApp();
import { post } from '../../../utils/request';

Page({
  data: {
    // 表单数据
    formData: {
      realName: '',  // 真实姓名
      gender: 'male',  // 性别，默认值为"male"（男）
      idCard: '',    // 身份证号
      experience: 0, // 工作经验年限
      introduction: '' // 个人介绍
    },
    // 性别选项
    genderOptions: ['男', '女'],
    // 性别值映射
    genderValues: {
      '男': 'male',
      '女': 'female'
    },
    // 经验年限选项
    experienceOptions: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    // 提交按钮状态
    submitLoading: false
  },

  onLoad(options) {
    // 初始化页面

    // 根据gender值查找对应的显示文本
    let displayGender = '男'; // 默认显示
    for (const [key, value] of Object.entries(this.data.genderValues)) {
      if (value === this.data.formData.gender) {
        displayGender = key;
        break;
      }
    }

    // 初始化选择器索引值
    const genderIndex = this.data.genderOptions.findIndex(item => item === displayGender);
    const experienceIndex = this.data.experienceOptions.findIndex(item => item === this.data.formData.experience);

    this.setData({
      genderIndex: genderIndex !== -1 ? genderIndex : 0,
      experienceIndex: experienceIndex !== -1 ? experienceIndex : 0,
      displayGender: displayGender
    });
  },

  // 输入姓名
  onInputRealName(e) {
    this.setData({
      'formData.realName': e.detail.value
    });
  },

  // 输入身份证
  onInputIdCard(e) {
    this.setData({
      'formData.idCard': e.detail.value
    });
  },

  // 性别选择变化
  handleGenderChange(e) {
    const index = e.detail.value;
    const displayGender = this.data.genderOptions[index]; // 显示值："男"或"女"
    const valueGender = this.data.genderValues[displayGender]; // 实际值："male"或"female"

    this.setData({
      'formData.gender': valueGender, // 存储实际值
      genderIndex: index,
      displayGender: displayGender // 存储显示值，用于界面显示
    });

  },

  // 工作经验选择变化
  handleExperienceChange(e) {
    const index = e.detail.value;
    this.setData({
      'formData.experience': this.data.experienceOptions[index],
      experienceIndex: index
    });
  },

  // 输入个人介绍
  onInputIntroduction(e) {

    // TDesign textarea组件的事件处理
    // 当使用bind:change时，e直接是值
    // 当使用bindinput时，e.detail是值
    let content = '';
    if (typeof e === 'string') {
      // bind:change 返回的直接是字符串
      content = e;
    } else if (e && e.detail) {
      // bindinput 返回的是事件对象
      content = e.detail.value || e.detail;
    }


    this.setData({
      'formData.introduction': content
    });
  },

  // 表单验证
  validateForm() {
    const { realName, idCard, gender, introduction } = this.data.formData;

    // 验证姓名
    if (!realName || realName.trim() === '') {
      wx.showToast({
        title: '请输入真实姓名',
        icon: 'none'
      });
      return false;
    }

    // 验证身份证
    if (!idCard || idCard.trim() === '') {
      wx.showToast({
        title: '请输入身份证号',
        icon: 'none'
      });
      return false;
    }

    // 简单的身份证号格式验证
    const idCardReg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
    if (!idCardReg.test(idCard)) {
      wx.showToast({
        title: '身份证号格式不正确',
        icon: 'none'
      });
      return false;
    }

    // 验证性别
    if (!gender || (gender !== 'male' && gender !== 'female')) {
      wx.showToast({
        title: '请选择性别',
        icon: 'none'
      });
      return false;
    }

    // 验证个人介绍
    if (!introduction || introduction.trim() === '') {
      wx.showToast({
        title: '请填写个人介绍',
        icon: 'none'
      });
      return false;
    }

    return true;
  },

  // 提交申请
  submitApply() {

    // 表单验证
    if (!this.validateForm()) {
      return;
    }

    // 防止重复提交
    if (this.data.submitLoading) {
      return;
    }

    this.setData({
      submitLoading: true
    });

    // 获取用户ID
    const userInfo = wx.getStorageSync('userInfo');
    const userId = userInfo ? userInfo.id : null;

    if (!userId) {
      wx.showToast({
        title: '用户信息获取失败',
        icon: 'none'
      });
      this.setData({
        submitLoading: false
      });
      return;
    }

    // 构建请求数据
    const data = {
      userId: userId,
      realName: this.data.formData.realName,
      gender: this.data.formData.gender, // 这里使用枚举值 'male' 或 'female'
      idCard: this.data.formData.idCard,
      experience: this.data.formData.experience,
      introduction: this.data.formData.introduction
    };


    // 调用申请成为服务人员接口
    post('/api/service-provider/add', data)
      .then(res => {
        if (res.code === 0) {
          wx.showToast({
            title: '申请提交成功',
            icon: 'success'
          });

          // 延迟返回上一页
          setTimeout(() => {
            // 可能需要刷新或清理某些缓存状态
            const pages = getCurrentPages();
            const prevPage = pages[pages.length - 2]; // 获取上一页面
            if (prevPage) {
              // 刷新上一页数据
              prevPage.checkLoginStatus();
            }

            wx.navigateBack();
          }, 1500);
        } else {
          wx.showToast({
            title: res.message || '申请提交失败',
            icon: 'none'
          });
        }
      })
      .catch(err => {
        console.error('申请提交失败:', err);
        wx.showToast({
          title: '申请提交失败: ' + (err.message || '网络错误'),
          icon: 'none'
        });
      })
      .finally(() => {
        this.setData({
          submitLoading: false
        });
      });
  }
}) 